home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / basic / pbtool.exe / PBSEARCH.BAS < prev    next >
BASIC Source File  |  1991-11-11  |  2KB  |  78 lines

  1. '----------------------------------------------------------
  2. '  PROGRAM: PBSEARCH.BAS       PROGRAMMER: A. KELLETT
  3. '  DATE-WRITTEN: 06/12/91
  4. '  USING POWER BASIC V2.10A
  5. '
  6. '  THIS PROGRAM ALLOWS THE USER TO SEARCH FOR SPECIFIED
  7. '  TEXT WITHIN A FILE
  8. '  VERSION: 1.01    LAST UPDATED: 06/14/91
  9. '----------------------------------------------------------
  10. CLS
  11. BLOCKSIZE% = 30000
  12. PRINT "    THIS PROGRAM SEARCHES A FILE FOR A SPECIFIC TEXT STRING."
  13. PRINT "    IT WILL REPORT (IF FOUND), EXACTLY WHERE THE TEXT WAS WITHIN"
  14. PRINT "    THE FILE AND WILL DISPLAY TEXT FOLLOWING THE FOUND TEXT."
  15. PRINT:PRINT
  16.  
  17. INPUT "PROGAM TO SEARCH: ";FILENAME$
  18. INPUT "TEXT TO FIND    : ";TEXT$
  19. IF FILENAME$ = "" OR TEXT$ = "" THEN
  20.    PRINT "PROGRAM NAME MUST BE 1-12 CHARACTERS AND THE TEXT ENTERED"
  21.    PRINT "MUST BE ONE OR MORE CHARACTERS."
  22.    LOCATE 22,1
  23.    END
  24. END IF
  25. OPEN FILENAME$ FOR BINARY AS #1
  26.    IF LOF(1) < 1 THEN
  27.       PRINT "THE INPUT FILE DOES NOT EXISTS."
  28.       CLOSE #1
  29.       KILL FILENAME$
  30.       DELAY 2.5
  31.       LOCATE 22,1
  32.       END
  33.    END IF
  34. CLOSE #1
  35.  
  36. OPEN FILENAME$ FOR BINARY AS #1
  37. FILE1EOF& = LOF(1)
  38.  
  39. GETLOOP:
  40.    BASEADDR = BASEADDR + BYTES
  41.    IF FILE1EOF& - LOC(1) => BLOCKSIZE% THEN
  42.       BYTES = BLOCKSIZE%
  43.    ELSE
  44.       BYTES = FILE1EOF& - LOC(1)
  45.    END IF
  46.    GET$ 1, BYTES, TEMP$
  47.    L = INSTR(TEMP$, TEXT$)
  48.    IF L THEN
  49.       CURRENT& = CURRENT& + L - 1
  50.       PRINT "THE TEXT ";CHR$(34);TEXT$;CHR$(34);" WAS FOUND"
  51.       PRINT "AT BYTE NUMBER ";CURRENT&;" OF FILE ";FILENAME$
  52.       SEEK 1, CURRENT&
  53.       TEMP$ = ""
  54.       IF CURRENT& < (FILE1EOF& - 41) THEN
  55.          GET$ 1, 40, FOUNDSTRING$
  56.       ELSE
  57.          X = FILE1EOF& - CURRENT&
  58.          FOR I% = 1 TO X
  59.             GET$ 1, X, TEMP$
  60.             FOUNDSTRING$ = FOUNDSTRING$ + TEMP$
  61.             TEMP$ = ""
  62.          NEXT I%
  63.       END IF
  64.       PRINT:PRINT "DATA : ";FOUNDSTRING$
  65.       LOCATE 18,1
  66.       CLOSE
  67.       END
  68.    ELSE
  69.       CURRENT& = LOC(1) - 2000
  70.       SEEK 1, LOC(1) - 2000
  71.       IF BYTES = BLOCKSIZE% THEN
  72.          GOTO GETLOOP
  73.       END IF
  74.    END IF
  75.    PRINT "THE TEXT ";CHR$(34);TEXT$;CHR$(34);_
  76.       " WAS NOT FOUND IN FILE: ";FILENAME$
  77. CLOSE:END
  78.